#include "adc.h"
#include "dac.h"
#include "dds.h"
#include "oled.h"
#include "delay.h"
#include "timer.h"
#include "serial.h"

#include <STC51.h>

// 数据存取空间
#define DATA_LEN 512
int index = 0;
int data_elem[DATA_LEN];

void main(){
	int i;
	
	timer0_init();	// 定时器初始化
	
	serial_init();	// 初始化串口
	
	adc_init();		// adc初始化
	
	EA = 1;	// 允许中断	
	
	while(1){
	};
}

int index2 = 0;

void display(void){	
	SendString("DataRead!\r\n");
	SendInt(11);
	SendUInt(12);
	SendData('\r');
	SendData('\n');
	index2+=3;
	delay(1000);
}

// 采样率25kHz
void timer0 (void) interrupt 1{
	#pragma asm
	MOV A, #0;
    ORL A, #ADC_POWER | ADC_SPEEDLL | ADC_START
    MOV ADC_CONTR,A				;开始AD转换
    #pragma endasm
	
	if(index==DATA_LEN){
		index = 0;
		display();
		return;
	}
	
	index++;
	
//	#pragma asm
//	mov a, P0
//	cpl a
//	mov P0, a
//	#pragma endasm
	
	#pragma asm
WAIT_ADC:
    MOV   A,ADC_CONTR			;等待ADC转换完成
    JNB   ACC.4,WAIT_ADC		;ADC_FLAG(ADC_CONTR.4)
    ANL   ADC_CONTR,#NOT ADC_FLAG;清ADC标志
	#pragma endasm
	data_elem[index] = (ADC_RES << 2)+ADC_RESL;
}
